#!/bin/bash

. /etc/conf.d/dictd
. /etc/rc.conf

. /etc/rc.d/functions

preconfiguration() {
	stat_busy "Check dictd configuration"
	if [ ! -e ${DICTD_CONF} ];  then
		echo "No configuration"
		stat_fail 
		exit 1
	fi
	stat_done

	# The new way of doing this is to scan /usr/lib/dict and tweek the conf
	stat_busy "Scanning for dictionaries..."
	if [ ! -d "${DICTD_DICTDIR}" ]; then
 		echo "No dictionaries found"
		stat_fail
		exit 1
	fi
	stat_done
	pushd ${DICTD_DICTDIR} >/dev/null
	INDEXFILES=`ls *.index`
	if [ -z "$INDEXFILES" ]; then
 		echo "No dictionaries found"
		stat_fail 
		exit 1
	fi

	cat $DICTD_CONF | sed -e '/^#LASTLINE/,$d' > $DICTD_TMPCONF
	echo "#LASTLINE" >> $DICTD_TMPCONF

	CNT=0
	for i in $INDEXFILES
	do
		DNAME=`echo $i | awk -F . '{print $1;}'`
		#two possible names for a matching dictionary, check which is there.
		if [ -f ${DNAME}.dict.dz ]; then
			DICT=${DNAME}.dict.dz
		elif [ -f ${DNAME}.dict ];then
			DICT=${DNAME}.dict
		else
			echo "Index $i has no matching dictionaray..."
		fi

		#ok, go an index, and a dixtionary, append.
		echo "database $DNAME { data \"${DICTD_DICTDIR}/${DICT}\"" >> $DICTD_TMPCONF
		echo "         index \"${DICTD_DICTDIR}/$i\" }" >> $DICTD_TMPCONF

		CNT=`expr $CNT + 1`
	done
	popd >/dev/null
	mv ${DICTD_TMPCONF} ${DICTD_CONF}
	echo "$CNT dictionary indexes found."
}

PID=`pidof -o %PPID /usr/sbin/dictd`

case "$1" in 
  start)
  	preconfiguration || exit 1
	stat_busy "Start dictd daemon"
	/usr/sbin/dictd $DICTD_ARGS -- $DICTD_EARGS
	if [  $? -gt 0 ]; then
	      stat_fail
	else
	      add_daemon dictd
  	      stat_done
    	fi
    ;;

   stop)
	stat_busy "Stop dictd daemon"
	kill $PID 2>/dev/null 1>/dev/null
	if [ $? -gt 0 ]; then
	    stat_fail
	else
	    rm_daemon dictd
	    stat_done
	fi
	;;
  restart)
	 $0 stop
	sleep 1
	$0 start
	;;
  *)
	echo "usage: $0 {start|stop|restart}"
esac
